package com.reflect;

import java.lang.reflect.Method;

public class Test02 {
    public static void main(String[] args) {
        test02();
    }

    public static void test02() {
        Class type1=Student.class;
        try {
            //获取指定的方法对象，通过方法名和参数类型进行指定
            Method md=type1.getDeclaredMethod("sayHi");
            Method md2=type1.getDeclaredMethod("sayBye", String.class);
            //使用类文件对象创建实例
            Student stu=(Student) type1.newInstance();
            System.out.println("调用sayhi");
            //调用方法
            md.invoke(stu);
            System.out.println("调用sayBye");
            md2.invoke(stu,"张三");
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
    public static void test01() {
        Class type1=Student.class;
        //获取类文件下的所有方法，不收访问控制修饰符的限制
        Method[] m=type1.getDeclaredMethods();
        for (Method mm:m
        ) {
            System.out.println(mm.getName());
        }

    }

}
